package com.example.logindemo.service;

import com.example.logindemo.entity.Review;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.Optional;

public interface ReviewService {
    
    // 创建评价
    Review createReview(Review review);
    
    // 根据ID获取评价
    Optional<Review> getReviewById(Integer id);
    
    // 根据跑单ID获取评价
    Optional<Review> getReviewByRunOrderId(String runOrderId);
    
    // 根据用户ID获取评价列表
    List<Review> getReviewsByUserId(Integer userId);
    
    // 获取所有评价
    List<Review> getAllReviews();
    
    // 更新评价
    Review updateReview(Review review);
    
    // 删除评价
    void deleteReview(Integer id);
    
    // 提交评价（包含图片处理）
    Map<String, Object> submitReview(String runOrderId, Integer rating, String content, String tags,
                                     List<MultipartFile> images, Integer userId, String userName);
    
    // 编辑评价（包含图片处理）
    Map<String, Object> editReview(Integer reviewId, Integer rating, String content, String tags,
                                  List<MultipartFile> images, List<String> removeImageIds);
    
    // 获取最新评价
    List<Review> getLatestReviews(int limit);
    
    // 获取指定评分范围的评价
    List<Review> getReviewsByRatingBetween(Integer minRating, Integer maxRating);
    
    // 获取平均评分
    Double getAverageRating();
    
    // 统计总评价数
    long getTotalReviews();
    
    // 检查订单是否已评价
    boolean isOrderReviewed(String runOrderId);
}